根據攻擊目標將拒絕服務攻擊分為哪些
根據攻擊目標將拒絕服務攻擊分為以下這些:
面向應用的攻擊:在面向應用的攻擊中,攻擊者試圖通過使應用非正常地耗盡有限的資源來阻止該應用執行其應該執行的正常任務。例如,在一個面向XML分析器的拒絕服務攻擊中,攻擊者向XML分析器傳遞一個構造良好且有效的小型XML文檔,但它可以擴張為非常龐大的文件。當XML分析器試圖分析該XML文檔時,會消耗掉所有該分析器的可用內存,文檔分析過程會因此而被終結。通常,應用開發人員或者運行管理人員會通過配置等手段限制應用對資源的過度使用,比如設置最大進程數量、設置一個應用可創建的最大并發連接數等,以此來限制由于面向應用的拒絕服務攻擊而對整個操作系統造成的影響。然而,如果這樣的限制不是基于主機的角色進行精心選擇,一些重要的應用反而更容易成為拒絕服務攻擊的目標。
面向操作系統的攻擊:面向操作系統的攻擊和面向應用的攻擊很相似,但在面向操作系統的拒絕服務攻擊的情況下,問題可能更加嚴重。一個非常著名的例子是TCP的SYN Flooding攻擊,在這個攻擊中,攻擊者向受害者發送巨量的TCP SYN請求分組,而當受害者基于三次握手協議再向攻擊者發送響應分組時,攻擊者則中止再響應,導致無法完成TCP握手過程,使連接處于“半開(Half-Open)”狀態,巨量半開狀態連接的存在會耗盡受害者主機的內存資源。這樣的攻擊將影響目標操作系統中依賴TCP進行通信的所有應用。
面向路由器的攻擊:許多面向端系統的拒絕服務攻擊也可以針對IP路由器發起。此外,路由協議也被用于發起面向路由器的拒絕服務攻擊,而且,和面向端系統的攻擊不同,通過路由協議實施面向路由器的拒絕服務攻擊的影響范圍通常不止一臺路由器設備,往往是包括多臺路由器的一個網絡。這類攻擊需要攻擊者有能力假冒特定的地址發送流量,使受害者相信收到的路由報文是正常有效的。最簡單的面向路由器的攻擊是用大量的路由表項來使路由器的路由表過載,從而耗盡路由器的內存或CPU處理能力。更嚴重的面向路由器的拒絕服務攻擊是利用假冒的路由更新信息,引起整個網絡地址段的路由黑洞,即所謂的路由欺騙或路由劫持。
面向通信連接的拒絕服務攻擊:和攻擊端系統或者應用不同,面向通信連接的攻擊試圖破壞或中斷一個正在進行中的通信連接。如果攻擊者可以觀察到一個TCP連接,比如知道其通信的發起方和/或接收方以及TCP端口號和序列號等,那么他就能比較輕易地通過發送假冒的報文來重置該連接或者使其失去同步,這樣該連接的后續通信也就無法進行了。即使攻擊者無法直接觀察到這樣的TCP連接,只要他能推斷出有這樣一個連接存在,那么他還是有可能通過發送大量的假冒TCP重置分組來重置該連接或者使其失去同步。
面向鏈路的拒絕服務攻擊:最簡單的面向鏈路的拒絕服務攻擊形式是發送大量本身不帶擁塞控制機制的協議報文(比如UDP報文)直至造成相關鏈路極度擁塞,并造成合法流量的大量丟包。通過造成某條鏈路擁塞也可能在路由層面導致路由器與其鄰居“失聯”,因為過度擁塞不僅會影響數據層面的流量,同時也會導致控制層面的分組丟失,路由協議會認為相關的鄰居發生故障,這將放大攻擊造成的影響。簡單網絡管理協議(SNMP)的Trap報文就是有可能造成此類攻擊的一種手段,因為Trap報文是基于UDP數據報傳輸的一種應用,本身不受擁塞控制。
面向基礎設施的拒絕服務攻擊:許多網絡應用系統需要依賴某些基礎設施才能完成正常操作,這類基礎設施可以大如全球性的域名服務DNS或全球性的公鑰基礎設施PKI,也可以小如局域以太網基礎設施或者無線訪問點AP。面向基礎設施的拒絕服務攻擊對用戶造成的影響往往是巨大的,比如,如果域名服務器由于攻擊而癱瘓,那么所有依賴于域名解析服務的應用都無法被訪問。而且很顯然,DNS服務器所在的層級越高,服務的范圍越大,其遭受攻擊后造成的影響也越大。
面向防火墻和IDS的拒絕服務攻擊:防火墻的作用是通過限制往來于受保護的系統(主機系統、數據中心或企業網絡)的數據通信流量來防御被保護系統免遭外界的安全威脅,也可用于防御拒絕服務攻擊。但另一方面,防火墻本身也很容易成為DDoS攻擊的目標。通過耗盡防火墻的CPU處理資源,可以很容易地對防火墻進行攻擊。對于有狀態防火墻來說,還可以通過耗盡其狀態表資源的方式進行攻擊,攻擊者可以發送大量不同源IP地址、目的IP地址、源端口和目的端口的流量,當這些流量流經防火墻的時候,將產生巨量的狀態表項;還可以通過產生病態結構的狀態等方式進行攻擊。對于絕大多數防火墻來說,這將直接導致防火墻里的所有被保護系統無法提供服務,因為為了安全起見,絕大部分防火墻在遭遇自身失效的情況下的默認動作是斷開連接。在后一種情況下,攻擊者發送的攻擊流量將導致防火墻的數據結構處于最差的工作狀態。
防御拒絕服務攻擊的方法有以下這些:
分組過濾:為了避免被攻擊,可以對特定的流量進行過濾(丟棄),例如,用防火墻過濾掉所有來自某些主機的報文,為了防止Smurf攻擊而設置過濾器過濾掉所有ICMP協議的ECHO報文。這種基于特定攻擊主機或者內容的過濾方法只限于已經定義的固定的過濾器,不適合動態變化的攻擊模式。還有一種“輸入診斷”方案,由受害者提供攻擊特征,沿途的因特網服務提供商(Internet Service Provider,ISP)配合將攻擊分組過濾掉,但是這種方案需要各個ISP的網絡管理員人工配合,工作強度高、時間耗費大,因此較難實施,但效果明顯。
源端控制通:常參與DoS攻擊的分組使用的源IP地址都是假冒的,因此如果能夠防止IP地址假冒,就能夠防止此類DoS攻擊。通過某種形式的源端過濾可以減少或消除假冒IP地址的現象,從而防范DoS攻擊。例如,路由器檢查來自與其直接相連的網絡分組的源IP地址,如果源IP地址非法(與該網絡不匹配)則丟棄該分組。電信服務提供商利用自身的優勢加強假冒地址的控制,可大大降低DDoS攻擊的影響。現在越來越多的路由器支持源端過濾。但是,源端過濾并不能徹底消除IP地址假冒。例如,一個ISP的客戶計算機仍然能夠假冒成該ISP網絡內成百上千臺計算機中的一臺。
追溯:追溯發起攻擊的源端的方法很多,這些方法假定存在源地址假冒,它試圖在攻擊的源處抑制攻擊,并識別惡意的攻擊源。它在IP地址假冒的情況下也可以工作,是日后采取必要的法律手段防止將來攻擊的必要一步。但是追溯過程中并不能實時控制攻擊的危害,當攻擊很分散時也不能做到有效追溯。
路由器動態檢測和控制:這種方法的基本原理是在路由器上動態檢測和控制DoS攻擊引起的擁塞,其主要依據是DoS攻擊分組雖然可能來源于多個流,但這些流肯定有某種共同特征,比如有共同的目的地址或源地址(或地址前綴),或者都是TCP SYN類型的報文。這些流肯定在某些路由器的某些輸出鏈路上聚集起來并造成大量的分組丟失。這些有共同特征的流可以稱為流聚集(aggregate)。其主要設想是流聚集所通過的路由器有可能通過分析分組丟失的歷史辨識出這種流聚集。如果一個路由器辨識出了這些高帶寬的流聚集,它就可以通知送來這些流聚集的上游路由器限制其發送速率。這種由發生擁塞的路由器發起的回推(pushback)信號可能一直遞歸地傳播到源端。這種機制從直觀上不難理解,如果能夠實際使用,則對于解決DoS攻擊問題有很好的效果。但是這種機制在實際的網絡中能否實用面臨著檢測標準、公平性機制、高效實現及運營管理等很多未解決的問題。
前端代理:我們可為靜態資源準備多個站點做冗余備份,當Service Worker加載資源出錯時,可不返回錯誤給上層頁面,而是繼續從備用站點加載,直到獲得正確結果才返回。這樣,只要有一個備用站點可用,資源就不會加載失敗。
離線訪問:Service Worker 的設計初衷就是為了增強網頁的離線化體驗,因此一旦安裝即可在后臺長期運行,即使服務器關機、瀏覽器重啟,它也不會失效。
免費節點:使用冗余站點雖能提升穩定性,但攻擊者仍可對備用站點發起攻擊,尤其是惡意消耗流量費用的攻擊,導致成本大幅上升。為此,我們還可使用一種更極端的方案使用免費 CDN 作為備用站點,例如 jsdelivr.net、unpkg.com、IPFS Gateway 等等,圖片則可上傳到各大網站的相冊。
接口防御:對于純靜態資源的站點,我們可將所有資源甚至包含 HTML 文件都通過免費 CDN 加速,從而大幅降低成本、增加穩定性。